package sge.servlets;

import java.io.IOException;
import java.util.List;

import javax.jdo.PersistenceManager;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import sge.beans.Curso;
import sge.beans.Fachada;
import sge.beans.Professor;
import sge.beans.Usuario;
import sge.data.PMF;
import sge.data.ProfessorDAO;

public class CursoServlet extends HttpServlet {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		String nomeDiretoria = req.getParameter("diretoria");
		String areaProfissional = req.getParameter("areaProfissional");
		String nomeCurso = req.getParameter("curso");
		String coordenador = req.getParameter("coordenador");
		String subcoordenador = req.getParameter("subcoordenador");
		String codigo = req.getParameter("codigo");

		Fachada fachada = Fachada.obterInstancia();
		Curso curso = new Curso();

		Long idArea = fachada.buscarIDArea(areaProfissional);
		curso.setIdArea(idArea);
		Long idDiretoria = fachada.buscarIDDiretoria(nomeDiretoria);
		curso.setIdDiretoria(idDiretoria);

		curso.setNome(nomeCurso);
		curso.setCoordenador(coordenador);
		curso.setSubcoordenador(subcoordenador);
		curso.setCodigo(codigo);
		fachada.inserirCurso(curso);
		
		proverProfessorCoordenador(coordenador, subcoordenador);

		direcionarPagina(req, resp);
	}
	private void proverProfessorCoordenador(String coordenador,
			String subcoordenador) {
		atualizarProfessor(coordenador,subcoordenador);
		
	}
	private void atualizarProfessor(String coordenador,String subcoordenador) {
		ProfessorDAO dao = ProfessorDAO.obterProfessorDAO();
		List<Professor> professores = dao.todosProfessores();
		for(int i=0;i<professores.size();i++){
			if(professores.get(i).getNome().equalsIgnoreCase(coordenador)||professores.get(i).getNome().equalsIgnoreCase(subcoordenador)){
				/*Professor prof = professores.get(i);
				prof.setTipo("coordenador");
				dao.inserirProfessor(prof);*/	
				
				PersistenceManager pm = PMF.get().getPersistenceManager();
			    try {
			        Professor e = pm.getObjectById(Professor.class, professores.get(i).getIdProfessor());
			        String tipo = "coordenador";
			        e.setTipo(tipo);			      
			    } finally {
			        pm.close();
			    }

			}
		}
	}
	private void direcionarPagina(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		Usuario usuario =  (Usuario) request.getSession().getAttribute("usuario");
		if(usuario.getTipo().equalsIgnoreCase("professor")){
			request.getRequestDispatcher(request.getContextPath()+"professor/feedback/cadastro_efetuado.jsp").forward(request, response);
			return;
		}
		if(usuario.getTipo().equalsIgnoreCase("coordenador")){
			request.getRequestDispatcher(request.getContextPath()+"coordenador/feedback/cadastro_efetuado.jsp").forward(request, response);
			return;
		}
		if(usuario.getTipo().equalsIgnoreCase("administrador")){
			request.getRequestDispatcher(request.getContextPath()+"administrador/feedback/cadastro_efetuado.jsp").forward(request, response);
			return;
		}		
	}
}
